package com.fortune.dao;

import com.fortune.dto.in.mStoreIn.MStoreInAddDto;
import com.fortune.dto.in.mStoreIn.MStoreInEditDto;
import com.fortune.dto.in.mStoreIn.MStoreInListDto;
import com.fortune.dto.in.mStoreIn.MStoreInProduceDto;
import com.fortune.vo.mStoreIn.MStoreInInfo;
import com.fortune.vo.mStoreIn.MStoreInInfoDetail;
import com.fortune.vo.productStockDetailInfo.ProductStockDetailInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MStoreInDao {
    /**
     * 入库单列表
     * @param companyId
     * @param mStoreInListDto
     * @return
     */
    List<MStoreInInfo> queryMStoreInList(@Param("companyId") String companyId, @Param("mStoreInListDto") MStoreInListDto mStoreInListDto);

    /**
     * 入库单列表个数
     */
    int queryMStoreInListCount(@Param("companyId") String companyId, @Param("mStoreInListDto") MStoreInListDto mStoreInListDto);

    /**
     * 入库单详情
     * @param companyId
     * @param id
     * @return
     */
    MStoreInInfoDetail queryMStoreInInfoDetail(@Param("companyId") String companyId, @Param("id") String id);

    /**
     * 新增入库单
     * @param companyId
     * @param addDto
     * @return
     */
    int addMStoreIn(@Param("userId") String userId,@Param("id") String id, @Param("companyId") String companyId, @Param("addDto") MStoreInAddDto addDto);

    /**
     * 添加入库单详情
     * @param companyId
     * @param id
     * @param list
     * @return
     */
    int addMStoreInInfo(@Param("companyId") String companyId, @Param("id") String id, @Param("list") List<MStoreInProduceDto> list);

    /**
     * 编辑入库单
     * @param companyId
     * @param editDto
     * @return
     */
    int editMStoreIn(@Param("companyId") String companyId, @Param("editDto") MStoreInEditDto editDto);

    /**
     * 编辑入库单详情
     * @param companyId
     * @param id
     * @param list
     * @return
     */
    int editMStoreInInfo(@Param("companyId") String companyId, @Param("id") String id, @Param("list") List<MStoreInProduceDto> list);

    /**
     * 删除入库单
     * @param companyId
     * @param id
     * @return
     */
    int deleteMStoreIn(@Param("companyId") String companyId, @Param("id") String id);

    /**
     * 验收入库
     * @param companyId
     * @param id
     * @return
     */
    int updateMStoreInType(@Param("companyId") String companyId, @Param("id") String id);

    /**
     * 从入库信息中查询厂商商品库存明细账信息
     * @param companyId
     * @param id
     * @return
     */
    List<ProductStockDetailInfo> queryProductIn(@Param("companyId") String companyId, @Param("id") String id);

    /**
     * 删除入库详情信息
     * @param companyId
     * @param id
     * @return
     */
    int deleteMStoreInInfo(@Param("companyId") String companyId, @Param("id") String id);


}
